package com.lam.mall.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.lam.mall.app.vo.ProductSimpleVo;
import com.lam.mall.app.vo.SearchProdVo;
import com.lam.mall.entity.Product;
import com.lam.mall.param.ProductParam;

/**
 * 商品管理Service接口
 * 
 * @author admin
 * @date 2023-04-20
 */
public interface ProductService {

    /**
     * 查询商品管理
     * 
     * @param id 商品管理ID
     * @return 单个对象
     */
    public Product selectById(String id, boolean withRelateData);
    
    Product getSampleProdByIdCache(String id);

    /**
     * 查询商品管理列表
     * 
     * @param param 
     * @return 列表集合
     */
    public List<Product> selectList(ProductParam param);

    /**
     * 新增商品管理
     * 
     * @param product 
     * @return 
     */
    public int insert(Product product);

    /**
     * 修改商品管理
     * 
     * @param product 
     * @return 
     */
    public int update(Product product);

    /**
     * 删除商品管理信息
     * 
     * @param id ID
     * @return 
     */
    public int deleteById(String id);
    
    /**
	 * 删除商品管理信息
	 * 
	 * @param idStr ID，多个用逗号分隔
	 * @return 
	 */
	int deleteByIds(List<String> idList);
    
    /**
     * 根据商品id删除缓存
     * @param id
     */
    void removeProductCacheById(String id);

	public List<ProductSimpleVo> pageByPutAwayTime();

	public List<ProductSimpleVo> pageByTagId(String tagId);

	List<ProductSimpleVo> moreBuyProdList();

//	List<TagProductVo> tagProdList();

	List<ProductSimpleVo> pageByCategoryId(String categoryId);

	List<SearchProdVo> getSearchProdPageByProdName(String prodName, Integer sort, Integer orderBy);

	/**
     * 获取用户的收藏商品列表
     * @param page
     * @param userId
     * @return
     */
    List<ProductSimpleVo> collectionProds(@Param("userId") String userId);

	int updateStatus(Product product);

	List<ProductSimpleVo> browseProds(String userId);

}
